#ifndef __PUPPETCONTROLLER_H
#define __PUPPETCONTROLLER_H

#include "puppet.h"

class PuppetController
{
	public:
		PuppetController(Puppet *p1, Puppet *p2) : puppet1(p1), puppet2(p2) { }
		virtual ~PuppetController() { }

		void setPuppets(Puppet *p1, Puppet *p2) { puppet1 = p1; puppet2 = p2; }
		Puppet *getPuppet1() { return puppet1; }
		Puppet *getPuppet2() { return puppet2; }

		// Manipulate the puppets giving them commands provided through the puppet interface
		virtual void manipulate() = 0;

	protected:
		PuppetController(const PuppetController &);
		PuppetController &operator=(const PuppetController &);
		Puppet *puppet1;
		Puppet *puppet2;
};

#endif // !__PUPPETCONTROLLER_H
